原文发表于 2015-08-10,我的lofter: http://kimleo.lofter.com/post/46977_7ddad6a
在公司的mail list里面发现有人在讨论RAML。
Awesome!
这是我点进去首页的第一个反应。然后我准备开始慢慢地删掉我的自己构建JSONSpec的想法了。毕竟有了这么一个轮子,后来者也只能是追随前人的车辙。
与朋友深入讨论的过程中,他们还是把JSONSpec的概念朝着RESTful Web Service靠拢。然而他们并没有意识到所谓的Specification,是包罗万象的。当你去从非常高(或者说非常低?)的层次去思考的时候,就会从中找到更多的感悟。
比如当你spec的不止是service,变成了整个System的时候,你要考虑的是不同Module之间的Interaction和Communication,以及整个系统可能会出现的哪些Fault,和对外部提供的Interface,这个系统会涉及哪些Domain,要有哪些Role,与这些领域和角色想结合起来又有哪些Use Case,这中间会涉及到哪些Data,以及如何传递Message;当你说这些专有名词的时候,他们的spec又是什么。
或者你只想拿它来做一个特定的方面,比如数据库的建模。
定义Type,定义Relation,定义Query,定义Transaction,定义Reactor(trigger/event?)以及定义Procedure/Function。
你会发现一切都可以rich typed。有了constraints的世界比dynamic type的世界多得不是刻板和束缚,而是能够更多更深入地限制内容,更开放更详细地描述业务与设计,更直接更有效地控制错误和效率。
所以下一步是什么?
去思考“类型”和“类型系统”。想想真正适合你的是什么。
以及,Modeling first, Constraints first.